package m1;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1. 连接
        ConnectionFactory f = new ConnectionFactory();
        f.setHost("192.168.64.140");
        f.setPort(5672);
        f.setUsername("admin");
        f.setPassword("admin");
        Channel c = f.newConnection().createChannel();

        //2. 创建 helloworld 队列
        //   生产者和消费者都创建同一个队列，可以不必关心
        //   他们的启动顺序，谁先启动谁负责创建队列
        c.queueDeclare("helloworld",false,false,false,null);

        //2.5  创建回调对象
        DeliverCallback deliverCallback = new DeliverCallback() {
            @Override
            public void handle(String consumerTag, Delivery message) throws IOException {
                // message 是消息数据的封装对象
                byte[] a = message.getBody();
                String s = new String(a);
                System.out.println("收到： "+s);
            }
        };
        CancelCallback cancelCallback = new CancelCallback() {
            @Override
            public void handle(String consumerTag) throws IOException {
            }
        };

        //3. 从 helloworld 队列接收消息
        //   收到消息后会把消息传递给一个回调对象进行处理
        // c.basicConsume("helloworld", true, 处理消息的回调对象, 取消消息处理时的回调对象);
        c.basicConsume("helloworld", true, deliverCallback, cancelCallback);
    }
}
